Internet-delivered media takes two primary forms today. Download, or progressive download (referred to hereinafter simply as “download”), is a method to deliver a media file for local storage and playback to a media application or device (i.e., a receiving device), while streaming is a method to deliver and view a media file in real-time without storing it on a local receiving device. Media may also be delivered via local copy from physical media such as a portable drive, an optical disc, or another arrangement.
In the download scenario, a media file is downloaded to the receiving device at the quality (e.g., resolution, bit rate, etc) of the originating file. While it is possible to view the media file as it is downloading, delivery conditions may affect playback performance. For example, changes in network bandwidth, transmission delays or packet loss will decrease the effective download rate, forcing the receiving device to pause on playback until enough media is available again in the playback buffer.
Streaming employs real-time communication protocols to provide an uninterrupted viewing experience. However, streaming delivery is also vulnerable to changes in network bandwidth, transmission delays, and packet loss that can negatively impact playback and incur buffering problems. Furthermore, streaming protocols are designed to not provide a local copy of a media file to a consumer for further local storage and playback.
“Adaptive streaming” has been recently introduced to overcome the shortcomings of Internet delivery. Adaptive streaming allows different quality levels (e.g. different bit rates, or resolutions) of the same media file to be sent to a receiving device during the streaming as conditions change over time, depending on a number of factors, including net measured bandwidth, transmission delay, and available CPU resources of the receiving device. Among two primary approaches to adaptive streaming, one makes available multiple versions of a streamable media file at different quality levels, with the receiving device “jumping” from one media source to another in response to specific criteria. In the second approach, a media file is first divided into short segments (e.g. 3 seconds of video) before being encoded at different quality levels, and the receiving device can then request a subsequent portion at an appropriate bit rate depending on a similar set of criteria. (Media file “segments”, as broadly discussed and understood herein, could alternatively be termed “blocks” or “portions”.) In both approaches, if the delivery conditions are good the receiving device will receive media at the highest available quality level while if delivery conditions degrade, the receiving device will receive media at a lower quality level. In a typical scenario, the receiving device will playback multiple quality levels of the same media file over a period of time, since the network and device CPU conditions (and any other criteria taken into account) will vary over the same time.
While adaptive streaming provides a manner for playing back media files more reliably in a variable delivery network such as the Internet, it is not currently employed for transmitting a file to a consumer for local storage and further playback. While a streamed media file could well be stored for that purpose, it would almost inevitably contain segments of mixed quality throughout, and this clearly would fall short of a likely consumer expectation of a consistently high quality media file when playing back a downloaded file from a device.
Accordingly, a need has been recognized in connection with combining the specific advantages of both streaming and download, in such a way that consumers have the best experience possible in all consumption scenarios, whether that be streaming or download.